package unit5.part9;

import java.util.function.Function;

public class FunctionInterfaceTest {
    public static void main(String[] args) {
        // 创建普通对象
        SimpleInterface logic = new Simple();

        // 创建一个匿名类的对象
        logic = new SimpleInterface() {
            @Override
            public void process() {
                System.out.println("函数式接口");
            }
        };

        // 创建Lambda表达式的对象
        logic = () -> System.out.println("函数式接口");

        // 如何使用？
        logic.process();

        // Java已经提供给大家很多函数式接口，一般不需要自己创建
        // 使用 Function 业务逻辑：安全返回字符串的长度
        Function<String, Integer> stringSafeLength = str -> {
            if (str == null) {
                return 0;
            }
            return str.length();
        };
    }
}

// 告知IDE此为函数式接口
@FunctionalInterface
interface SimpleInterface {
    void process();
}

// 实现接口
class Simple implements SimpleInterface {
    @Override
    public void process() {
        System.out.println("函数式接口");
    }
}